﻿/*
 * Created by SharpDevelop.
 * User: Usuario
 * Date: 10/04/2014
 * Time: 04:23 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;
using System.Data.OleDb;
using Gestión_UTN.Entities;

namespace Gestión_UTN.daimpl
{
    /// <summary>
    /// Description of tipoExamendaimpl.
    /// </summary>
    public class tipoExamendaimpl : Gestión_UTN.da.tipoExamenda
    {
        public tipoExamendaimpl()
        {
        }

        public bool SaveTipoExamen(string tipo)
        {
            bool ingresado = false;

            OleDbConnection conex = null;
            OleDbTransaction trans = null;

            try
            {
                conex = util.Conexion.conectarAccess();
                trans = null;

                if (null != conex)
                {

                    string sql = "INSERT INTO tie_tipoExamen(tie_tipo)" +
                                "VALUES(@tipo)";

                    conex.Open();
                    trans = conex.BeginTransaction();

                    OleDbCommand insertar = new OleDbCommand(sql, conex, trans);

                    insertar.Parameters.AddWithValue("@tipo", tipo);

                    insertar.ExecuteNonQuery();

                    trans.Commit();

                    ingresado = true;

                    conex.Close();
                }
            }
            catch (Exception ex)
            {
                trans.Rollback();
                conex.Close();
                ingresado = false;

                throw new exceptions.daexception(ex.Message);
            }

            return ingresado;
        }

        public bool DeleteTipoExamen(string tipo)
        {
            bool eliminado = false;

            OleDbConnection conex = null;
            OleDbTransaction trans = null;

            try
            {
                conex = util.Conexion.conectarAccess();
                trans = null;

                if (null != conex)
                {

                    string sql = "DELETE FROM tie_tipoExamen " +
                        "WHERE tie_tipo = @tipo";

                    conex.Open();

                    trans = conex.BeginTransaction();

                    OleDbCommand eliminar = new OleDbCommand(sql, conex, trans);

                    eliminar.Parameters.AddWithValue("@tipo", tipo);

                    eliminar.ExecuteNonQuery();

                    trans.Commit();

                    eliminado = true;

                    conex.Close();
                }

            }
            catch (Exception ex)
            {
                eliminado = false;
                trans.Rollback();
                conex.Close();

                throw new exceptions.daexception(ex.Message);
            }

            return eliminado;
        }

        public bool ModifyTipoExamen(string tipo_anterior, string tipo)
        {
            bool modificado = false;

            OleDbConnection conex = null;
            OleDbTransaction trans = null;

            try
            {
                conex = util.Conexion.conectarAccess();
                trans = null;

                if (null != conex)
                {

                    string sql = "UPDATE tie_tipoExamen SET tie_tipo = @tipo " +
                                    "WHERE tie_tipo = @tipoAnterior";

                    conex.Open();
                    trans = conex.BeginTransaction();

                    OleDbCommand modificar = new OleDbCommand(sql, conex, trans);

                    modificar.Parameters.AddWithValue("@tipo", tipo);
                    modificar.Parameters.AddWithValue("@tipoAnterior", tipo_anterior);

                    modificar.ExecuteNonQuery();

                    trans.Commit();

                    modificado = true;

                    conex.Close();
                }

            }
            catch (Exception ex)
            {
                modificado = false;
                trans.Rollback();
                conex.Close();

                throw new exceptions.daexception(ex.Message);
            }

            return modificado;
        }

        public System.Data.DataTable FindAllTipoExamenes()
        {
            DataTable tablaTipos = null;

            OleDbConnection conex = null;

            try
            {
                conex = util.Conexion.conectarAccess();
                tablaTipos = new DataTable();

                if (null != conex)
                {

                    string sql = "SELECT tie_id, tie_tipo" +
                                    " FROM tie_tipoExamen tie";

                    OleDbDataAdapter adaptador = new OleDbDataAdapter(sql, conex);

                    conex.Open();

                    adaptador.Fill(tablaTipos);

                    conex.Close();
                }

            }
            catch (Exception ex)
            {
                tablaTipos = null;
                conex.Close();

                throw new exceptions.daexception(ex.Message);

            }

            return tablaTipos;
        }

        public TipoExamen FindTipoExamenById(int tie_id)
        {
            TipoExamen tipo = null;

            OleDbConnection conex = null;

            try
            {
                conex = util.Conexion.conectarAccess();

                if (null != conex)
                {

                    string sql = "SELECT tie_id, tie_tipo" +
                                    " FROM tie_tipoExamen tie" +
                                    " WHERE tie_id = @id";

                    conex.Open();

                    OleDbCommand consulta = new OleDbCommand(sql, conex);

                    consulta.Parameters.AddWithValue("@id", tie_id);

                    OleDbDataReader lector = consulta.ExecuteReader();

                    while (lector.Read())
                    {
                        int id = Convert.ToInt32(lector[0].ToString());
                        string nombre = lector[1].ToString();

                        tipo = new TipoExamen(id, nombre);
                    }

                    conex.Close();
                }

            }
            catch (Exception ex)
            {
                tipo = null;
                conex.Close();

                throw new exceptions.daexception(ex.Message);
            }

            return tipo;
        }
    }
}
